home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Mac Game Programming Gurus
/
TricksOfTheMacGameProgrammingGurus.iso
/
More Source
/
Libraries
/
PlayerPRO 4.4.1
/
MADF Library 3.0
/
Example.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-04-18
|
5KB
|
231 lines
/********************************************************/
/*
Player PRO 4.4 -- Music Driver EXAMPLE
Library Version 3.0
To use with MusicLibrary 3.0 for Think C & CodeWarrior
Antoine ROSSET
16 Tranchees
1206 GENEVA
SWITZERLAND
FAX: (41 22) 346 11 97
Compuserve: 100277,164
Internet: rosset@dial.eunet.ch
*/
/********************************************************/
#include "MAD.h"
#include "RDriver.h"
#include "gestaltequ.h"
#include "sound.h"
static Boolean Stereo, StereoMixing, NewSoundManager, hasASC;
main()
{
long gestaltAnswer, sndSize, tL;
short myBit, iFileRefI, x, i;
NumVersion nVers;
Point where = { -1, -1};
SFReply reply;
SFTypeList aType;
OSErr iErr = noErr;
Ptr tempPtr;
MADPartition aPartition;
Boolean End;
/*************** ****************/
/****** Toolbox Initialization **********/
/*************** ****************/
InitGraf( &qd.thePort);
InitFonts();
FlushEvents(everyEvent,0);
InitWindows();
TEInit();
InitMenus();
InitCursor();
MaxApplZone();
/*************** ****************/
/****** HARDWARE IDENTIFICATION AND CHECK **********/
/*************** ****************/
/****************/
/** ASC CHIP ? **/
/****************/
Gestalt( gestaltHardwareAttr, &gestaltAnswer);
myBit = gestaltHasASC;
if( BitTst( &gestaltAnswer, 31-myBit) == false) hasASC = false;
else hasASC = true;
/**************/
/** STEREO ? **/
/**************/
Gestalt( gestaltSoundAttr, &gestaltAnswer);
myBit = gestaltStereoCapability;
Stereo = BitTst( &gestaltAnswer, 31-myBit);
/*********************/
/** STEREO MIXING ? **/
/*********************/
myBit = gestaltStereoMixing;
StereoMixing = BitTst( &gestaltAnswer, 31-myBit);
/****************************/
/** SOUND MANAGER >= 3.0 ? **/
/****************************/
nVers = SndSoundManagerVersion();
if( nVers.majorRev >= 3) NewSoundManager = true;
else NewSoundManager = false;
/****************************************************/
/****************************************************/
/*******************************************************************************************/
/****** MAD Library Initialisation : choose the best driver for the current hardware ******/
/****** ******/
/****** Standard initialization with 4 tracks... ******/
/*******************************************************************************************/
PtrSystem = false;
if( Stereo == true && StereoMixing == true)
{
if( NewSoundManager == true)
{
if( RInitMusic( SMStereo, 4, false) != noErr) ExitToShell();
}
else if( hasASC == true)
{
if( RInitMusic( ASCStereo, 4, false) != noErr) ExitToShell();
}
else if( RInitMusic( SMDSP, 4, false) != noErr) ExitToShell();
}
else
{
if( NewSoundManager == true)
{
if( RInitMusic( SMMono, 4, false) != noErr) ExitToShell();
}
else if( hasASC == true)
{
if( RInitMusic( ASCMono, 4, false) != noErr) ExitToShell();
}
else DebugStr("\pNo Driver for your Mac!");
}
/*********************************/
/*********************************/
/*********************************/
/****** Choose a MAD ('MADF') or a MODs ('STrk') File ********/
End = false;
while( End == false)
{
FlushEvents( everyEvent, 0);
aType[ 0] = 'MADF';
aType[ 1] = 'STrk';
SFGetFile( where, "\p", 0L, 2, aType, 0L, &reply);
if( !reply.good) End = true;
else
{
SetVol( 0L, reply.vRefNum);
if( reply.fType == 'STrk') // **** MOD File ****
{
iErr = FSOpen( reply.fName, 0, &iFileRefI);
if( iErr) DebugStr( "\pProblemo ??");
GetEOF( iFileRefI, &sndSize);
tempPtr = NewPtr( sndSize);
FSRead( iFileRefI, &sndSize, tempPtr);
FSClose( iFileRefI);
ConvertMod2Mad( tempPtr, sndSize, &aPartition);
RInstallMADF( aPartition);
DisposPtr( tempPtr); tempPtr = 0L;
}
else if( reply.fType == 'MADF') // **** MAD File ****
{
/*** To load a MAD File *********/
if( RLoadMusic( reply.fName) != noErr) Debugger();
/*
*** TO OPEN A MAD RESOURCE ***
To create a MAD Resource, use Auto-Exec export from Player PRO !!!!
And load the resource with: by example...
RLoadMusicRsrc( 'MADF', 3124); for example...
*/
}
else DebugStr("\pUh Uh...");
/****************************************/
/**** Update the tracks number !! *******/
/****************************************/
if( theFileInt->Tracks != DriveTrackNo)
{
DriveTrackNo = theFileInt->Tracks;
ChangeTrackNo( DriveTrackNo);
}
/****************************************/
/****/
// Set all track volumes to 0
for( i = 0; i < MAXTRACK; i++)VolExt[ i] = 0;
RPlayMusic();
Reading = true;
/****/
// Increase slowly the volume
for( x = 0; x <= 64; x++)
{
for( i = 0; i < MAXTRACK; i++) VolExt[ i] = x;
Delay( 1, &tL);
}
while( !Button())
{
/** Do what you want here.... **/
/** Bla bla... **/
}
/****/
// Decrease slowly the volume
for( x = 64; x >= 0; x--)
{
for( i = 0; i < MAXTRACK; i++) VolExt[ i] = x;
Delay( 1, &tL);
}
Reading = false;
RStopMusic(); // Stop music
CleanDriver();
RClearMusic(); // Dispose the current music
}
}
RQuitMusic(); // Dispose music driver
FlushEvents( everyEvent, 0);
ExitToShell();
}